home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / FredFish PD 314.adf / Zc / zcsrc.lzh / IOLib / strlib / strrpl.c < prev    next >
C/C++ Source or Header  |  1988-11-09  |  508b  |  27 lines

  1. int strrpl(string, ptrn, rpl, n)
  2.     char *string, *ptrn;
  3.     register char *rpl;
  4.     register int n;
  5. /*
  6.  *    Replace at most <n> occurances of <ptrn> in <string> with <rpl>.
  7.  *    If <n> is -1, replace all.  Return the number of replacments.
  8.  */
  9.     {
  10.     register char *p, *q = string;
  11.     register int d, rlen, nn = 0;
  12.     char *strstr();
  13.  
  14.     rlen = strlen(rpl);
  15.     d = rlen - strlen(ptrn);
  16.     while(n && (p = strstr(q, ptrn)))
  17.         {
  18.         ++nn;
  19.         stradj(p, d);
  20.         strncpy(p, rpl, rlen);
  21.         q = p + rlen;
  22.         if(n > 0)
  23.             --n;
  24.         }
  25.     return(nn);
  26.     }
  27.